package manager;

import java.util.Hashtable;

/**
 * Cette classe implémente l'ensemble des paramètres et options nécessaires au fonctionnement de l'application.
 * 
 * @author BERNARD Arthur, DELAMARCHE Jérôme, PAVAGEAU Max
 */
public class ParameterSet {
	/**
	 * Regroupement des variables booléenes et de leurs valeurs.
	 */
	private Hashtable<String, Boolean> boolValues;
	/**
	 * Regroupement des variables réelles et de leurs valeurs.
	 */
	private Hashtable<String, Double> doubleValues;
	
	/**
	 * Constructeur par défaut. Ajoute les paramètres suivants à la classe: <br>
	 * 	<strong>cplex:</strong> Exécution par CPlex <br>
	 * 	<strong>vns:</strong> Exécution par VNS <br>
	 * 	<strong>log:</strong> Mise en place d'un fichier de log <br>
	 * 	<strong>verbose:</strong> Renseignement des étapes de résolution sur l'interface <br>
	 * 	<strong>nbitermax:</strong> La valeur du nombre d'itération avant arrêt de VNS <br>
	 * 	<strong>nbvisitmax:</strong> La valeur de la taille du voisinage maximum visité <br>
	 * 	<strong>epsilon:</strong> Un paramètre de VNS <br>
	 */
	public ParameterSet() {
		boolValues = new Hashtable<String, Boolean>();
		boolValues.put("cplex", false);
		boolValues.put("vns", false);
		boolValues.put("log", false);
		boolValues.put("verbose", false);
		
		doubleValues = new Hashtable<String, Double>();
		doubleValues.put("nbitermax", 0.0);
		doubleValues.put("nbvisitmax", 0.0);
		doubleValues.put("epsilon", 0.0);
	}
	
	public void setParam(String param, boolean value) {
		if(boolValues.containsKey(param))
			boolValues.put(param, value);
	}
	
	public void setParam(String param, double value) {
		if(doubleValues.containsKey(param))
			doubleValues.put(param, value);
	}
	
	public boolean getBool(String param) {
		return boolValues.get(param);
	}
	
	public double getDouble(String param) {
		return doubleValues.get(param);
	}
}
